package com.atguigu.common.valid;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.HashSet;
import java.util.Set;

/**
 * Created by Miracle yaochengwei on 2022/6/10 10:50
 */
//第一个是校验注解 ，第二个是标注在 Integer类型上
public class ListValueConstraintValidator implements ConstraintValidator<ListValue,Integer> {
    //为了判断 我们private  先写一个set ，给set里面放一些Integer 的数据
    private Set<Integer> set  = new HashSet<>();
    //初始化方法，会将valu 注解详细信息给我们
    @Override
    public void initialize(ListValue constraintAnnotation) {
        int[] vals = constraintAnnotation.vals();//vals我们给定的值，必须指向这些信息
        //将所有值放在 set 里面 ，判断我们提交的值有没有在set里面
        //遍历都放到set里面  加非空判断
        for (int val : vals){
            set.add(val);
        }
    }
    //判断是否校验成功
    //value 第一个value 是用户体交的数据 ，用这个value 去上面校验 看是否慢走 vals 0 和1

    /**
     *
     * @param value 需要校验的值
     * @param context
     * @return
     */
    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext context) {
       //if (set.contains(value)) //包含返回 true 不包含返回false
        return set.contains(value);
    }
}
